package com.njwb.day08.system.view;


import com.njwb.day08.system.entity.Student;
import com.njwb.day08.system.service.StudentService;
import com.njwb.day08.system.service.impl.StudentServiceImpl;

import java.util.Scanner;

public class StudentInformationSystem {

    public static void main(String[] args) {
        /*
            学生信息录入系统
            用于存放学生数据的学生数组：Student[] stus;
            功能：
            1.添加学生信息：学号、姓名、成绩
                          学号不能重复
            2.修改学生信息：根据学号修改姓名和成绩
                          学号是否存在的判断
            3.删除学生信息：根据学号删除对应学生
                          学号是否存在的判断
            4.查询所有学生信息
            5.根据学号查询学生信息
            6.根据姓名查询学生信息
            7.根据学生的成绩进行从大到小排序展示所有学生信息
            8.退出系统 System.exit(0)
            要求：
            对于正常操作的数据根据以上三个数组进行正常录入或查询
            对于条件不满足的一些情形通过错误对用户做出错误提示
         */
        //int:sc.nextInt();
        //String:sc.nextLine();
        //double:sc.nextDouble();

        Scanner sc=new Scanner(System.in);
        System.out.println("##欢迎来到学生信息录入系统##");
        while(true){
            System.out.println("1.添加学生信息");
            System.out.println("2.修改学生信息");
            System.out.println("3.删除学生信息");
            System.out.println("4.查询所有学生信息");
            System.out.println("5.根据学号查询学生信息");
            System.out.println("6.根据姓名查询学生信息");
            System.out.println("7.根据学生的成绩进行从大到小排序展示所有学生信息");
            System.out.println("8.退出系统");
            System.out.println("请选择：");
            int choose=sc.nextInt();
            switch (choose){
                case 1:
                    addStudent();
                    break;
                case 2:
                    findAllStudents();
                    modifyStudentByNo();
                    break;
                case 3:
                    findAllStudents();
                    removeStudentByNo();
                    break;
                case 4:
                    findAllStudents();
                    break;
                case 5:
                    findStudentByNo();
                    break;
                case 6:
                    findStudentByName();
                    break;
                case 7:
                    findStudentByScore();
                    break;
                case 8:
                    System.out.println("欢迎下次使用...");System.exit(0);break;
                default:
                    System.out.println("输入有误！请重新输入");
            }

        }
    }

    //根据学生的成绩进行从大到小排序展示所有学生信息
    public static void findStudentByScore() {
        StudentService studentService=new StudentServiceImpl();
        Student[] students=studentService.findStudentAsc();
        System.out.println("学号\t姓名\t成绩");
        for (int i=0;i<students.length;i++){
            System.out.println(students[i].getNo()+"\t"+students[i].getName()+"\t"+students[i].getScore());
        }
    }

    //根据学号查询学生信息
    public static void findStudentByNo(){
        Scanner sc=new Scanner(System.in);
        //学号
        System.out.println("请输入整数的学号：");
        int no=sc.nextInt();
        StudentService studentService=new StudentServiceImpl();
        Student student=studentService.findByNameOrNo(null,no);
        //经过上面循环并没有找到对应的学生
        if(student==null){
            System.out.println("当前学生不存在！");
            return;
        }
        System.out.println("学号\t姓名\t成绩");
        System.out.println(student.getNo()+"\t"+student.getName()+"\t"+student.getScore());
    }

    //根据姓名查询学生信息
    public static void findStudentByName(){
        Scanner sc=new Scanner(System.in);
        //学号
        System.out.println("请输入字符串的姓名：");
        String name=sc.next();
        StudentService studentService=new StudentServiceImpl();
        Student student=studentService.findByNameOrNo(name,-1);
        //经过上面循环并没有找到对应的学生
        if(student==null){
            System.out.println("当前学生不存在！");
            return;
        }
        System.out.println("学号\t姓名\t成绩");
        System.out.println(student.getNo()+"\t"+student.getName()+"\t"+student.getScore());
    }

    //删除学生信息
    public static void removeStudentByNo(){
        Scanner sc=new Scanner(System.in);
        //学号
        System.out.println("请输入整数的学号：");
        int no=sc.nextInt();
        StudentService studentService=new StudentServiceImpl();
        int index=studentService.findByNo(no);
        if(index==-1){
            System.out.println("当前学生不存在");
            return;
        }
        String message=studentService.removeStudent(index);
        System.out.println("学号："+no+"的信息"+message);
    }

    //修改学生信息
    public static void modifyStudentByNo(){
        Scanner sc=new Scanner(System.in);
        //学号
        System.out.println("请输入整数的学号：");
        int no=sc.nextInt();
        StudentService studentService=new StudentServiceImpl();
        int index=studentService.findByNo(no);
        if(index==-1){
            System.out.println("当前学生不存在");
            return;
        }
        //姓名
        System.out.println("请输入字符串的姓名：");
        String name=sc.next();
        //成绩
        System.out.println("请输入小数的成绩：");
        double score=sc.nextDouble();
        Student student=new Student(no,name,score);
        String message=studentService.modifyStudent(student,index);
        System.out.println("学号："+no+"的信息"+message);
    }

    //录入学生信息
    public static void addStudent(){
        Scanner sc=new Scanner(System.in);
        //学号
        System.out.println("请输入整数的学号：");
        int no=sc.nextInt();
        StudentService studentService=new StudentServiceImpl();
        int index=studentService.findByNo(no);
        if (index!=-1){
            System.out.println("学号已存在！");
            return;
        }

        //姓名
        System.out.println("请输入字符串的姓名：");
        String name=sc.next();
        //成绩
        System.out.println("请输入小数的成绩：");
        double score=sc.nextDouble();
        Student student=new Student(no,name,score);
        String message=studentService.addStudent(student);
        System.out.println(message);
    }

    //查询所有学生信息
    public static void findAllStudents(){
        StudentService studentService=new StudentServiceImpl();
        Student[] stus=studentService.findAll();
        //判断有没有录入学生信息
        if(stus.length==0){
            System.out.println("暂时没有录入任何学生信息...");
        }else{
            //展示所有学生
            //System.out.println("打印所有学生信息...");
            System.out.println("学号\t姓名\t成绩");
            for (int i=0;i<stus.length;i++){
                //获取每一个学生对象
                Student stu=stus[i];
                System.out.println(stu.getNo()+"\t"+stu.getName()+"\t"+stu.getScore());
            }
        }
    }
}
